1. Technical Field
The invention is related to automatic computer input device association, and more particularly to a system and process for redirecting signals generated by a computer input device from one computing device in a computing space to another computing device in the space.
2. Background Art
Ubiquitous computing revolves around extending computational activities beyond the current desktop model and into the environment. In future homes and offices, access to computing should be as natural as access to lighting. Users should not be required to go to a special place (i.e., the desktop) to interact with the computer. Rather, the computer should be available to interface with the user anywhere in the home or office (or more generally anywhere in an arbitrarily large computing space), through whatever set of devices is available, be they fixed or carried by the user.
It is noted that the term computer is used loosely here in that the user actually would have access to a wide variety of computing devices such as personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like, as well as distributed computing environments that include any of the above systems or devices. Thus, it should be understood that when the term computer is used in connection with the concept of ubiquitous computing, in actuality a wide variety of computing devices and schemes may be involved.
One particular issue of concern in ubiquitous computing is the common scenario of a room filled with computers along with their various input devices, such as computer mice, keyboards, trackballs, and the like, as well as display devices like a computer monitor. In a traditional setting, an input device would be used to interface with a nearby computer and its monitor, and no other computers in the room. However, people often associate the proximity of devices with their working together. For instance, it is usually expected that the light switches in a room control the lights in the room, and that remote controls in the room work the remotely controllable devices in the room. Part of the vision of ubiquitous computing is to have devices behave as they should when they are near each other. For instance, a computer mouse used near a certain computer monitor should control the cursor on that monitor. Thus, ideally, in an ubiquitous computing environment a user would expect that the input devices would work with whatever computer display device they are near. This is particularly true for mobile input devices such as wireless keyboards and computer mice that are intended to be moved freely from place to place. Further, a user might also expect this behavior to be modulated by other factors, like their personal preferences, the ambient conditions in the room, the compatibility of the input devices with the computers, and so on.
The present invention addresses the foregoing issues with a system and process for automatically initiating and terminating associations between a computer input device of some type (e.g., computer mice, keyboards, trackballs, and the like) and a computer in a computing space that can have many such devices and several computers. In this way, input devices can be used to interface with any of the computers in the space. For instance, a user could move about a room filled with computers and their respective computer monitors, with a wireless mouse, and interface with the various computers using the mouse. However, it is noted that the input devices need not be xe2x80x9cwirelessxe2x80x9d to be associated with other computers in a computing space. In fact, associations can actually contradict hardware connections. For instance, a keyboard wired to a certain computer does not need to have its keystrokes sent to that computer, rather they could be sent to any computer in the space.
The aforementioned association between input devices and computers in a computing space entails redirecting signals generated by a computer input device from one computer to another computer in the space. The association is either initiated or terminated depending on whether sets of pre-defined preconditions have been satisfied. It is noted that each of the input devices is physically connected to one of the computers in the space. This connection implies that the signals generated by the input device would nominally be routed to an input queue of the assignee computer, barring any re-routing of the signal as will be discussed next. For the purposes of the following description, an input device that is connected to a computer in the computing space will be referred to as being assigned to that computer.
To accomplish the desired re-routing of the input device signals, the following architecture and input signal interception/routing processes can be employed to link the input devices and computers residing in the computing space. Each of the computers in the computing space that has an input device connected to it would include at least one input device output path or xe2x80x9csourcexe2x80x9d. This output path by-passes the nominal input queue of the computer and directs the signal out of the computer. In addition, each computer in the computing space that it is desired for an input device assigned to another computer to interface with, includes at least one alternate input device input path or xe2x80x9csink.xe2x80x9d. This sink is capable of accepting input device signals that are output from a source on the assignee computer and routing them to another computer""s input queue. Only signals routed from other computers would be input through the aforementioned alternate input paths. The input device output paths and alternate input device input paths can enter and leave the computers via specialized plugs, a network connection, or any other workable inlet or outlet, whether physical or virtual. Sources and sinks can be directly connected, or as in tested embodiments of the present invention linked via a network. The aforementioned processes for intercepting and routing input device signals is preferably handled by one or more computer programs resident on the various computers in the computing space.
It is noted that the computer receiving input device signals from an input device assigned to another computer may also be an assignee computer with its own assigned input devices. These devices would interface with the computer through its standard input device inputs, and could be either wired or wireless.
The foregoing architecture and intercepting/routing processes allow for the signals generated by any input device in the computing space to be routed to any computer in the space. However, there must also be a vehicle for controlling the re-routing process. This role is taken by at least one computer program resident in one or more of the computers in the space. The program first determines whether a set of prescribed initiating preconditions for rerouting the input device signals from an assignee computer to another of the computers in the space have been satisfied. Whenever the initiating preconditions are satisfied, the input device signals are rerouted using the previously-described architecture away from the input queue of the assignee computer to the input device output path of that computer instead. In addition, the input device signals from a source on the assignee computer are routed to the sink of another computer in the space, where they are finally routed by the other computer to its input queue. Thus, the input device would interface with the other computer just as if it were assigned to that computer.
As indicated above, the decision as to whether an input device is to be associated with a non-assignee computer depends on satisfying a set of preconditions. In addition, the decision as to whether an existing association is terminated depends on satisfying one or more of a set of terminating preconditions. These preconditions can be tied to any event or combination of events desired, and a set of preconditions can include any number of preconditions, even just one. Furthermore, the preconditions may include a direct user request for a particular routing. For example, a precondition may be established such that a user selection such as a click of wireless mouse or selection of some other user interface input would initiate or terminate an association. In general, the preconditions will fall in two categoriesxe2x80x94namely proximity-related preconditions and nonproximity-related preconditions.
Proximity-related initiating preconditions as the name implies involve a requirement that the input devices be relatively near a computer, or a display device connected to the computer, for an association to be initiated. Conversely, if the input device and computer are too far apart, proximity-related terminating preconditions would dictate that any association be terminated. Examples of proximity-related preconditions include an initiating precondition that an input device be within a prescribed distance from a non-assignee computer or its display device (e.g., computer monitor), and a companion terminating precondition that would terminate the association if the input device and computer are separated by some prescribed distance. In addition there may be other proximity-based preconditions, for example that the line of sight between the input device and a display device of a non-assignee computer be unobstructed to the degree that a person using the input device can see the display device. Here, the companion terminating precondition would be that this line of sight becomes blocked. Other proximity-based preconditions include an initiating precondition that no computer or display device in the computing space be closer to the input device than computer or display device under consideration for association with an input device. This would have a companion terminating precondition that the associated computer or display device remains the closest to the input device. It is noted that the simple separation distance precondition described above may not suffice in some circumstances. For example, suppose a wireless keyboard is very near a monitor, but behind it so that a person using the keyboard could not see the display screen of the monitor. In such a case an association should not be made between the keyboard and the computer to which the monitor is connected. This problem can be resolved by defining a service area for the input and display devices. For a display device such as a computer monitor, the service area is the region in the computing space in which the display screen of the device can be seen by a user given the orientation of the display screen. Similarly, the service area of an input device such as a wireless mouse or keyboard might be its maximum range of operation. An example of an initiating precondition related to the input device service area is that the other computer be located within the service area defined for the input device. The companion terminating precondition would of course be that the other computer is outside the input device""s service area. Another example of a precondition related to service areas is an initiating precondition requiring that an input and display device be located within each other""s service area. The corresponding termination condition for this example would be that either the input or display device moves outside the other""s service area. It is also noted that the size of the service area defined for the input and display devices need not be the same in connection with the initiating preconditions compared to terminating preconditions. Particularly, the service areas connected with the terminating preconditions could be larger than those used for the initiating preconditions. This would be useful, for example, where it is desired that an input device be relatively close to a display device before the input device is associated with the computer to which the display device is connected, but where it is desired that the association not be terminated unless the input device is taken further away from the display than the initiating distance.
Examples of nonproximity-related preconditions include an initiating precondition that at least one ambient condition in the computing space fall within a prescribed range, and a terminating precondition that an ambient condition falls outside the prescribed range. For example, a precondition could required that an association only be initiated if the illumination within the space exceed a level that would allow a person in the space to see and operate the input device. The corresponding terminating precondition for this would require the association to be terminated if the illumination level fell below the prescribed level. Another example of a nonproximity-based precondition involves the state of the input devices, the computers and any display devices in the computing space. Essentially, initiating preconditions would require that an input device, computer and possible a display device connected to the computer being considered for association, be in their ready states. The corresponding terminating precondition would require the association to be terminated if the input device, computer, or the display device, go offline. Additional examples of a nonproximity-based preconditions include an initiating precondition that would preclude an input device from being of a particular configuration whose signals are incompatible for input to the computer being associated with the input device, or an initiating precondition that no other input device of the type under consideration can have its signals redirected to the other computer. There is no companion terminating precondition for the first of these examples since an incompatible device will never be associated. However, in the case of the pre-existing association, it might be desired to allow the new association to take place, while the existing association is terminated. In such a case a terminating precondition for a particular association between an input device and a computer in the computing space could require that the association be terminated if another association is initiated between a different input device and the same computer.
In addition to the foregoing types of preconditions, an initiating or terminating precondition could be based on a user specified preference, rather than applying to all users in a global fashion. User preference preconditions could be either proximity or nonproximity related. Additionally, as noted above, the user could directly request a particular routing through an appropriate user interface. For example, the user could request that the current keyboard and mouse which they are using be routed to a different computer. This would allow them to control that other computer. In a room with multiple displays connected to different computers, this is a useful capability. Both initiating and terminating preconditions could depend on direct user input.
In general, preconditions for initiation or termination can be expressed in formal logic, allowing any precondition to be a logical combination of other preconditions, be they proximity-based, non-proximity based, or directly commanded. For example, a keyboard might become associated with a particular display if 1) the keyboard is in the service area of the display (proximity) and 2) the keyboard is not owned by any user (non-proximate) and 3) a user indicates through some UI that it is desired for the keyboard to become associated (direct-command).
The aforementioned computer programs that control the re-routing process must obtain information about the computing space in order to determine if the initiating and terminating preconditions have been satisfied. This is preferably done by inputting the needed information from one or more databases. These databases would be maintained so as to reflect the most current information available. For example, there would preferably be a geometry database containing information concerning the geometry of the computing space and the locations in the computing space of the input devices and computers, as well as any display devices of interest. Another useful database would be a device state database that contains information concerning the readiness of the input devices, computers and display devices in the computing space. If there are preconditions involving the ambient conditions in the computing space, one of the databases could be an ambient conditions database containing information concerning the ambient conditions in the computing space that are relevant to any of the initiating and terminating preconditions. Finally, there could be a user preference database containing the current user preferences that are relevant to the initiating and terminating preconditions.
In practice, the needed information about the computing space could be obtained by requiring the various databases to periodically output the information. This could be done on a prescribed schedule, or whenever new or updated information is obtained by a database. Alternately, the computer program could be designed to periodically request the needed information and input the results.
In addition to the just described benefits, other advantages of the present invention will become apparent from the detailed description which follows hereinafter when taken in conjunction with the drawing figures which accompany it.